package telas.representante;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JTabbedPane;
import java.awt.SystemColor;
import javax.swing.JLabel;
import java.awt.Font;

import javax.swing.JFormattedTextField;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.text.MaskFormatter;
import javax.swing.ImageIcon;
import javax.swing.DefaultComboBoxModel;

import modelo.Fachada;

import controle.representante.ControleRepresentante;
import controle.representante.ControleRepresentanteSwing;

import telas.sistema.ListenerJTextField;

public class TelaRepresentante extends JFrame {

	private JPanel contentPane;
	
	private JTextField tfCpf;    
	private JTextField tfRg;    	
	private JTextField tfNomeRepresentante;
	private JTextField tfCidade;
//	private JTextField tfNomeDoRepresentante;
	private JTable table;
	private JButton btnSalvarDados;
	private JButton btnLimparDados;
	private JButton btnLimparBusca;
	private JButton btnBuscar;
	private JButton btnAlterarRepresentante;
	private JButton btnExcluirRepresentante;
	private boolean novoRepresentante = true;
	private JComboBox cbxEstado;
	private JTextArea taObservacoes;
	private RepresentanteTableModel model;
	private TableRowSorter<RepresentanteTableModel> sorter;
	
	private JTabbedPane tabbedPane;
	private JPanel pnlCadastrarRepresentante;
	private JPanel pnlListar;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TelaRepresentante frame = new TelaRepresentante();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public TelaRepresentante() {
		super("Representante");
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 800, 600);
		setVisible(true);
		setLocationRelativeTo(null);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(0, 122, 794, 450);
		contentPane.add(tabbedPane);
		
		pnlCadastrarRepresentante = new JPanel();
		pnlCadastrarRepresentante.setBackground(SystemColor.controlHighlight);
		tabbedPane.addTab("Cadastrar Representante", null, pnlCadastrarRepresentante, null);
		pnlCadastrarRepresentante.setLayout(null);
		
		JLabel lblCadastrarDadosRepresentante = new JLabel("Cadastrar Dados do Representante");
		lblCadastrarDadosRepresentante.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCadastrarDadosRepresentante.setBounds(10, 11, 461, 19);
		pnlCadastrarRepresentante.add(lblCadastrarDadosRepresentante);
		
		JLabel lblNomeRepresentante = new JLabel("Nome");
		lblNomeRepresentante.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblNomeRepresentante.setBounds(10, 41, 51, 15);
		pnlCadastrarRepresentante.add(lblNomeRepresentante);
		
		tfNomeRepresentante = new JTextField();
		tfNomeRepresentante.setColumns(10);
		tfNomeRepresentante.setBounds(10, 55, 524, 20);
		pnlCadastrarRepresentante.add(tfNomeRepresentante);
		
		JLabel lblCpf = new JLabel("CPF");
		lblCpf.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblCpf.setBounds(546, 41, 51, 15);
		pnlCadastrarRepresentante.add(lblCpf);
		
		tfCpf = new JTextField();  
		tfCpf.setColumns(10);
		tfCpf.setBounds(546, 55, 110, 20);
		pnlCadastrarRepresentante.add(tfCpf);
//		tfCpf.getDocument().addDocumentListener(new ListenerJTextField(tfCpf));
		
		JLabel lblRg = new JLabel("RG");
		lblRg.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblRg.setBounds(668, 41, 51, 15);
		pnlCadastrarRepresentante.add(lblRg);
		
		tfRg = new JTextField();  
		tfRg.setColumns(10);
		tfRg.setBounds(668, 55, 109, 20);
		pnlCadastrarRepresentante.add(tfRg);
//		tfRg.getDocument().addDocumentListener(new ListenerJTextField(tfRg));
		
		cbxEstado = new JComboBox();
		cbxEstado.setModel(new DefaultComboBoxModel(new String[] {"Acre - AC", "Alagoas - AL", "Amap\u00E1 - AP", "Amazonas - AM", "Bahia  - BA", "Cear\u00E1 - CE", "Distrito Federal  - DF", "Esp\u00EDrito Santo - ES", "Goi\u00E1s - GO", "Maranh\u00E3o - MA", "Mato Grosso - MT", "Mato Grosso do Sul - MS", "Minas Gerais - MG", "Par\u00E1 - PA", "Para\u00EDba - PB", "Paran\u00E1 - PR", "Pernambuco - PE", "Piau\u00ED - PI", "Rio de Janeiro - RJ", "Rio Grande do Norte - RN", "Rio Grande do Sul - RS", "Rond\u00F4nia - RO", "Roraima - RR", "Santa Catarina - SC", "S\u00E3o Paulo - SP", "Sergipe - SE", "Tocantins - TO"}));
		cbxEstado.setBounds(10, 99, 146, 20);
		pnlCadastrarRepresentante.add(cbxEstado);
		
		JLabel lblEstado = new JLabel("Estado");
		lblEstado.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblEstado.setBounds(10, 86, 51, 15);
		pnlCadastrarRepresentante.add(lblEstado);
		
		JLabel lblCidade = new JLabel("Cidade");
		lblCidade.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblCidade.setBounds(165, 86, 51, 15);
		pnlCadastrarRepresentante.add(lblCidade);
		
		tfCidade = new JTextField();
		tfCidade.setColumns(10);
		tfCidade.setBounds(165, 100, 369, 20);
		pnlCadastrarRepresentante.add(tfCidade);
		
		taObservacoes = new JTextArea();
		taObservacoes.setBackground(SystemColor.info);
		taObservacoes.setBounds(10, 146, 524, 102);
		pnlCadastrarRepresentante.add(taObservacoes);
		
		JLabel lblObservacoes = new JLabel("Observa\u00E7\u00F5es");
		lblObservacoes.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblObservacoes.setBounds(10, 130, 74, 15);
		pnlCadastrarRepresentante.add(lblObservacoes);
		
		btnSalvarDados = new JButton("Salvar Dados");
		btnSalvarDados.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/disk.png")));
		btnSalvarDados.setBounds(10, 387, 145, 23);
		btnSalvarDados.addActionListener(new ControleRepresentanteSwing(this, new ControleRepresentante()));
		pnlCadastrarRepresentante.add(btnSalvarDados);
		
		JButton btnLimparDados = new JButton("Limpar Dados");
		btnLimparDados.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/bullet_page_white.png")));
		btnLimparDados.setBounds(165, 387, 145, 23);
		pnlCadastrarRepresentante.add(btnLimparDados);
		
		pnlListar = new JPanel();
		pnlListar.setBackground(SystemColor.controlHighlight);
		tabbedPane.addTab("Listar Representantes", null, pnlListar, null);
		pnlListar.setLayout(null);
		
		JButton btnLimparBusca = new JButton("Limpar Busca");
		btnLimparBusca.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/bullet_page_white.png")));
		btnLimparBusca.setBounds(632, 54, 145, 23);
		pnlListar.add(btnLimparBusca);
		
		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/zoom.png")));
		btnBuscar.setBounds(475, 54, 145, 23);
		pnlListar.add(btnBuscar);
		
//		tfNomeDoRepresentante = new JTextField();
//		tfNomeDoRepresentante.setColumns(10);
//		tfNomeDoRepresentante.setBounds(10, 55, 453, 20);
//		pnlListar.add(tfNomeDoRepresentante);
		
		JLabel lblNomeDoRepresentante = new JLabel("Nome do Representante");
		lblNomeDoRepresentante.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblNomeDoRepresentante.setBounds(10, 41, 142, 14);
		pnlListar.add(lblNomeDoRepresentante);
		
		JLabel lblListarRepresentantesCadastrados = new JLabel("Listar Representantes Cadastrados");
		lblListarRepresentantesCadastrados.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblListarRepresentantesCadastrados.setBounds(10, 11, 331, 19);
		pnlListar.add(lblListarRepresentantesCadastrados);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 86, 767, 286);
		pnlListar.add(scrollPane);
		
		
		model = new RepresentanteTableModel();
//		model.addListaDeRepresentante(Fachada.getListAllRepresentante());
		sorter = new TableRowSorter<RepresentanteTableModel>(model);
		table = new JTable(model);
		table.setBackground(SystemColor.info);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		table.setBackground(SystemColor.info);
		table.setAutoCreateRowSorter(true);
		table.setRowSorter(sorter);
		DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();  
		centralizado.setHorizontalAlignment(SwingConstants.CENTER); 
		table.getColumnModel().getColumn(0).setPreferredWidth(60);
		table.getColumnModel().getColumn(0).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(1).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(1).setPreferredWidth(500);
		table.getColumnModel().getColumn(2).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(2).setPreferredWidth(80);
		table.getColumnModel().getColumn(3).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(3).setPreferredWidth(80);
		
		scrollPane.setViewportView(table);
//		//
//		table.setModel(new DefaultTableModel(
//			new Object[][] {
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//				{null, null, null, null, null},
//			},
//			new String[] {
//				"Nome", "CPF", "RG", "UF", "Cidade"
//			}
//		));
//		table.getColumnModel().getColumn(0).setPreferredWidth(177);
//		table.getColumnModel().getColumn(1).setPreferredWidth(90);
//		table.getColumnModel().getColumn(2).setPreferredWidth(84);
//		table.getColumnModel().getColumn(3).setPreferredWidth(58);
//		table.getColumnModel().getColumn(4).setPreferredWidth(144);
//		scrollPane.setViewportView(table);
		
		JButton btnAlterarRepresentante = new JButton("Alterar Representante");
		btnAlterarRepresentante.setBounds(10, 479, 142, 23);
		pnlListar.add(btnAlterarRepresentante);
		
		JButton btnExcluirRepresentante = new JButton("Excluir Representante");
		btnExcluirRepresentante.setBounds(162, 479, 142, 23);
		pnlListar.add(btnExcluirRepresentante);
		
		JButton btnEditarRepresentante = new JButton("Editar Representante");
		btnEditarRepresentante.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/page_edit.png")));
		btnEditarRepresentante.setBounds(10, 384, 180, 23);
		pnlListar.add(btnEditarRepresentante);
		
		JButton btnExcluirRepresentante_1 = new JButton("Excluir Representante");
		btnExcluirRepresentante_1.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/bullet_cross.png")));
		btnExcluirRepresentante_1.setBounds(202, 384, 180, 23);
		pnlListar.add(btnExcluirRepresentante_1);
		
		JLabel logo = new JLabel("");
		logo.setIcon(new ImageIcon(TelaRepresentante.class.getResource("/telas/sistema/figuras/logo.com.fundo.png")));
		logo.setBounds(0, 0, 794, 144);
		contentPane.add(logo);
	}
	
	public JTextField getTfNomeRepresentante() {
		return tfNomeRepresentante;
	}

	public void setTfNomeRepresentante(JTextField tfNomeRepresentante) {
		this.tfNomeRepresentante = tfNomeRepresentante;
	}

	public JTextField getTfCpf() {
		return tfCpf;
	}

	public JTextField getTfRg() {
		return tfRg;
	}

	public void setTfCpf(JFormattedTextField tfCpf) {
		this.tfCpf = tfCpf;
	}

	public JTextField getTfCidade() {
		return tfCidade;
	}

	public void setTfCidade(JTextField tfCidade) {
		this.tfCidade = tfCidade;
	}

//	public JTextField getTfNomeDoRepresentante() {
//		return tfNomeDoRepresentante;
//	}
//
//	public void setTfNomeDoRepresentante(JTextField tfNomeDoRepresentante) {
//		this.tfNomeDoRepresentante = tfNomeDoRepresentante;
//	}

	public JButton getBtnSalvarDados() {
		return btnSalvarDados;
	}

	public void setBtnSalvarDados(JButton btnSalvarDados) {
		this.btnSalvarDados = btnSalvarDados;
	}

	public JButton getBtnLimparDados() {
		return btnLimparDados;
	}

	public void setBtnLimparDados(JButton btnLimparDados) {
		this.btnLimparDados = btnLimparDados;
	}

	public JButton getBtnLimparBusca() {
		return btnLimparBusca;
	}

	public void setBtnLimparBusca(JButton btnLimparBusca) {
		this.btnLimparBusca = btnLimparBusca;
	}

	public JButton getBtnBuscar() {
		return btnBuscar;
	}

	public void setBtnBuscar(JButton btnBuscar) {
		this.btnBuscar = btnBuscar;
	}

	public JButton getBtnAlterarRepresentante() {
		return btnAlterarRepresentante;
	}

	public void setBtnAlterarRepresentante(JButton btnAlterarRepresentante) {
		this.btnAlterarRepresentante = btnAlterarRepresentante;
	}

	public JButton getBtnExcluirRepresentante() {
		return btnExcluirRepresentante;
	}

	public void setBtnExcluirRepresentante(JButton btnExcluirRepresentante) {
		this.btnExcluirRepresentante = btnExcluirRepresentante;
	}
	
	public JTabbedPane getTabbedPane() {
		return tabbedPane;
	}

	public JPanel getPnlCadastrarEditar() {
		return pnlCadastrarRepresentante;
	}

	public JPanel getPnlListar() {
		return pnlListar;
	}

	public void setNovoRepresentante(boolean novoRepresentante) {
		this.novoRepresentante = novoRepresentante;
	}

	public boolean isNovoRepresentante() {
		return novoRepresentante;
	}

	public JComboBox getCbxEstado() {
		return cbxEstado;
	}
	public JTextArea getTaObservacoes() {
		return taObservacoes;
	}
	public RepresentanteTableModel getModel() {
		return model;
	}
	
}
